import { AppServices } from "../Helpers/Services";

import { actionItems, ActionView, BindableObject, DynamicString, GridView, IconTextView, IValidable, IView, IViewContent, IViewContentHost, IViewContentProvider, StringUsage } from "../Lib/WebApp";

 

export class OperatorHomeContent extends BindableObject implements IViewContentProvider {

 

    private _editor: IValidable & IView;

    private _host: IViewContentHost;

 

    constructor() {

        super();

    }

 

    /****************************************/

 

    getContentAsync(host: IViewContentHost) {

 

        this._host = host;

 

        let views: IView[] = [];

 

        views.push(new GridView({

 

            template: "ListViewInline",

 

            itemsSource: actionItems([

                AppServices.content.actionFor("venue-list"),

                AppServices.content.actionFor("catalog-list"),

                AppServices.content.actionFor("product-list"),

                AppServices.content.actionFor("pay-desk"),

                AppServices.content.actionFor("orders"),

                AppServices.content.actionFor("event-list"),

                AppServices.content.actionFor("book-list"),

                AppServices.content.actionFor("print-table-codes")

            ]),

 

            styles: ["action-grid"],

 

            createItemView: item => new ActionView({

                name: item.name,

                executeAsync: item.executeAsync,

                content: new IconTextView({

                    template: "IconTextViewInline",

                    icon: item.icon,

                    text: DynamicString.getValue(item.displayName, StringUsage.Action)

                }),

                tooltip: item.displayName

            })

        }));

 

        return Promise.resolve({

            views: views,

            styles: ["vertical", "scroll", "fit-items-h", "main-content"],

            title: this.info.displayName

        } as IViewContent);

    }

 

    /****************************************/

 

    readonly info = AppServices.content.get("operator-home");

}